package com.tdam2013.grupo12;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

import com.tdam2013.grupo12.clasesDeNegocio.BaseDeDatos;
import com.tdam2013.grupo12.clasesDeNegocio.Contacto;
import com.tdam2013.grupo12.clasesDeNegocio.Usuario;
import com.tdam2013.grupo12.webMessaging.RegistrarUsuario;
import com.tdam2013.grupo12.webMessaging.Resultado;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class NombreUsuario extends Activity implements OnClickListener{
	private String accion;
	private String nombreEscrito;
	private String password;
	private EditText etxtNombre;
	private EditText etxtPassword;
	private TextView txtPassword;
	private Button guardar;
	private Button masTarde;
	private BaseDeDatos bd;
	private Usuario u;
	private Contacto c;
	private RegistrarUsuario registrarUsuario;
	private NombreUsuario mThis;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_nombre_usuarioo);
		mThis = this;
		etxtNombre = (EditText) findViewById(R.id.etxtNombreUsuario);
		etxtPassword = (EditText) findViewById(R.id.etxtPassword);
		txtPassword = (TextView) findViewById(R.id.txtPassword);
		guardar = (Button) findViewById(R.id.btnGuardar);
		guardar.setOnClickListener(this);
		masTarde = (Button) findViewById(R.id.btnMasTarde);
		masTarde.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent returnIntent = new Intent();
				setResult(RESULT_CANCELED,returnIntent);  
				mThis.finish();
			}
		});
		bd = new BaseDeDatos(this);
		accion = getIntent().getExtras().getString("Accion");
		if(accion.compareTo("Editar") == 0){
			u = bd.getUsuarioWebMio();
			if(u != null) this.etxtNombre.setText(u.getNombreUsuario());
		}else if(accion.compareTo("RegistrarUsuarioContacto") == 0){
			etxtPassword.setVisibility(View.GONE);
			txtPassword.setVisibility(View.GONE);
			c = (Contacto) getIntent().getSerializableExtra("Contacto");
		}
		
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.nombre_usuario, menu);
		return true;
	}
	@Override
	public void onBackPressed(){
		Intent returnIntent = new Intent();
		setResult(RESULT_CANCELED,returnIntent);  
		this.finish();
	}

	@Override
	public void onClick(View v) {
		Intent returnIntent;
		nombreEscrito = this.etxtNombre.getText().toString();
		password = this.etxtPassword.getText().toString();
		if(accion.compareTo("Registrar") == 0 || accion.compareTo("Editar") == 0){
			if(nombreEscrito.compareTo("") == 0 || password.compareTo("") == 0){
				AlertDialog.Builder dialog = this.crearDialog("Debe completar todos los datos de usuario");
				dialog.show();
			}else{
				try{
					//TODO hay q corroborar que haya conexion sino que avise. Agregar boton "Mas Tarde".
					registrarUsuario = new RegistrarUsuario(this);
					registrarUsuario.execute(new String[]{nombreEscrito, password});
				}catch(Exception e){
					Log.e("Ajam", e.getMessage());
				}
			}	
		}else if(accion.compareTo("RegistrarUsuarioContacto") == 0){
			if(nombreEscrito.compareTo("") == 0){
				AlertDialog.Builder dialog = this.crearDialog("Debe completar todos los datos de usuario");
				dialog.show();
			}else{
				if(bd.registrarContactoUsuario(nombreEscrito, c.getId())){
					returnIntent = new Intent();
					returnIntent.putExtra("nombreUsuario", nombreEscrito);
					setResult(RESULT_OK, returnIntent);  
					this.finish();
				}else{
					returnIntent = new Intent();
					setResult(RESULT_CANCELED,returnIntent);  
					this.finish();
				}			
			}
			
		}
		
	}

	private AlertDialog.Builder crearDialog(String mensaje) {
		AlertDialog.Builder dialog = new AlertDialog.Builder(this);
		dialog.setMessage(mensaje);
		dialog.setIcon(R.drawable.icon_alert);
		dialog.setNegativeButton("Aceptar", new DialogInterface.OnClickListener() {
			 
			  @Override
			  public void onClick(DialogInterface dialog, int which) {
			     dialog.cancel();
			  }
			});
		return dialog;
	}

	public void setResultado(Resultado resultado){
		Intent returnIntent;
		if(resultado != null){
			if(resultado.getType().compareTo("success") == 0){
				if(this.accion.compareTo("Registrar")==0){
					u = new Usuario(nombreEscrito, password);
					if(bd.registrarUsuarioWebMio(u)){
						
						returnIntent = new Intent();
						setResult(RESULT_OK,returnIntent);  
						this.finish();
					}else{
						returnIntent = new Intent();
						setResult(RESULT_CANCELED,returnIntent);  
						this.finish();
					}
				}else if(this.accion.compareTo("Editar") == 0){
					u.setNombreUsuario(nombreEscrito);
					u.setPassword(password);
					if(bd.modificarNombreUsuario(u)){
						returnIntent = new Intent();
						setResult(RESULT_OK,returnIntent);  
						this.finish();
					}else{
						returnIntent = new Intent();
						setResult(RESULT_CANCELED,returnIntent);  
						this.finish();
					}
				}
//				Principal.setAlarmManager();
			}else if(resultado.getType().compareTo("error") == 0){
				String mensaje="Ha ocurrido un error:";
				mensaje+="\nCodigo: "+resultado.getCodigoError();
				if(resultado.getDescripcionError() != null)
					mensaje+="\nDescripcion: "+resultado.getDescripcionError();
				AlertDialog.Builder dialog = this.crearDialog(mensaje);
				dialog.show();
			}
			
		}else{
			String mensaje="Ha ocurrido un error en la conexion al servidor. Por favor intente nuevamente mas tarde";
			AlertDialog.Builder dialog = this.crearDialog(mensaje);
			dialog.show();
		}
	}
}
